data load

library(dplyr)
library(data.table)
library(ggplot2)
library(ggmap)
library(RColorBrewer)
library(leaflet)
library(scales)
library(plotly)

powerplants=read.csv('global_power_plant_database.csv')

powerplants[is.na(powerplants)] = 0
powerplantsUSA = powerplants %>% filter(country_long == "United States of America")

Data prep

powerplantsUSAFuel = powerplantsUSA %>% group_by(primary_fuel) 

powerplantsUSAFuelYear = powerplantsUSAFuel %>% summarise(energy2013 = 0.5* (sum(generation_gwh_2013) + sum(estimated_generation_gwh_2013)),
          energy2014 = 0.5* (sum(generation_gwh_2014) + sum(estimated_generation_gwh_2014)),
          energy2015 = 0.5* (sum(generation_gwh_2015) + sum(estimated_generation_gwh_2015)),
          energy2016 = 0.5* (sum(generation_gwh_2016) + sum(estimated_generation_gwh_2016)),
          energy2017 = 0.5* (sum(generation_gwh_2017) + sum(estimated_generation_gwh_2017)),
          )

powerplantsUSAFuelYearDF = as.data.frame(powerplantsUSAFuelYear)
powerplantsUSAFuelYearLabeled = powerplantsUSAFuelYearDF[,-1]
row.names(powerplantsUSAFuelYearLabeled) = powerplantsUSAFuelYearDF[,1]
transposePowerplantsUSAFuelYear = transpose(powerplantsUSAFuelYearLabeled)
colnames(transposePowerplantsUSAFuelYear) = powerplantsUSAFuelYearDF[,1]
transposePowerplantsUSAFuelYear$Year = c(2013,2014,2015,2016,2017)


totalEnergy = powerplantsUSAFuelYear %>% mutate(total = energy2013+ energy2014 +energy2015 + energy2016 + energy2017)

map

powertype = "Wind"
leaflet(powerplants %>% filter(primary_fuel == powertype)) %>% addTiles() %>% addMarkers(~longitude,~latitude,popup= ~primary_fuel,label= ~name)

Total energy bar chart

totalEnergyChart=ggplot(totalEnergy,aes(x=reorder(primary_fuel,total),y=total,fill=primary_fuel)) + geom_bar(stat="identity") + coord_flip() + scale_y_continuous(trans= 'log10', labels = trans_format('log10',math_format(10^.x))) + theme(axis.text.x = element_text(angle=90)) + ylab("Energy Accumulated MWH") + xlab("Primary Fuel")
totalEnergyChart

energy produced


data_long = melt(transposePowerplantsUSAFuelYear, id="Year")
Warning in melt(transposePowerplantsUSAFuelYear, id = "Year") :
  The melt generic in data.table has been passed a data.frame and will attempt to redirect to the relevant reshape2 method; please note that reshape2 is deprecated, and this redirection is now deprecated as well. To continue using melt methods from reshape2 while both libraries are attached, e.g. melt.list, you can prepend the namespace like reshape2::melt(transposePowerplantsUSAFuelYear). In the next version, this warning will become an error.
colnames(data_long) = c("Year","primary_fuel","energy")

lineplot = ggplot(data_long, aes(x=Year,y=energy, color= primary_fuel)) + ylab("Energy Produced MWH") + xlab("Year") + geom_line() + scale_y_continuous(trans= 'log10', labels = trans_format('log10',math_format(10^.x))) +ggtitle("Energy Produced over the Years per Type")

ggplotly(lineplot)
Warning in is.na(ticktext) :
  is.na() applied to non-(list or vector) of type 'expression'

number of plants by type

numberOfPlants = powerplantsUSAFuel %>% summarize(number = n())
ggplot(numberOfPlants,aes(x=reorder(primary_fuel,number), y=number,fill=primary_fuel)) + geom_bar(stat="identity") + theme(axis.text.x = element_text(angle=90)) + coord_flip() + scale_y_continuous(trans= 'log10', labels = trans_format('log10',math_format(10^.x))) + xlab("Primary Fuel") + ylab("Number of Plants") +ggtitle("Number of Plants per Type")

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpkYXRhIGxvYWQKYGBge3J9CmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZGF0YS50YWJsZSkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGdnbWFwKQpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShsZWFmbGV0KQpsaWJyYXJ5KHNjYWxlcykKbGlicmFyeShwbG90bHkpCgpwb3dlcnBsYW50cz1yZWFkLmNzdignZ2xvYmFsX3Bvd2VyX3BsYW50X2RhdGFiYXNlLmNzdicpCgpwb3dlcnBsYW50c1tpcy5uYShwb3dlcnBsYW50cyldID0gMApwb3dlcnBsYW50c1VTQSA9IHBvd2VycGxhbnRzICU+JSBmaWx0ZXIoY291bnRyeV9sb25nID09ICJVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EiKQpgYGAKRGF0YSBwcmVwCmBgYHtyfQpwb3dlcnBsYW50c1VTQUZ1ZWwgPSBwb3dlcnBsYW50c1VTQSAlPiUgZ3JvdXBfYnkocHJpbWFyeV9mdWVsKSAKCnBvd2VycGxhbnRzVVNBRnVlbFllYXIgPSBwb3dlcnBsYW50c1VTQUZ1ZWwgJT4lIHN1bW1hcmlzZShlbmVyZ3kyMDEzID0gMC41KiAoc3VtKGdlbmVyYXRpb25fZ3doXzIwMTMpICsgc3VtKGVzdGltYXRlZF9nZW5lcmF0aW9uX2d3aF8yMDEzKSksCiAgICAgICAgICBlbmVyZ3kyMDE0ID0gMC41KiAoc3VtKGdlbmVyYXRpb25fZ3doXzIwMTQpICsgc3VtKGVzdGltYXRlZF9nZW5lcmF0aW9uX2d3aF8yMDE0KSksCiAgICAgICAgICBlbmVyZ3kyMDE1ID0gMC41KiAoc3VtKGdlbmVyYXRpb25fZ3doXzIwMTUpICsgc3VtKGVzdGltYXRlZF9nZW5lcmF0aW9uX2d3aF8yMDE1KSksCiAgICAgICAgICBlbmVyZ3kyMDE2ID0gMC41KiAoc3VtKGdlbmVyYXRpb25fZ3doXzIwMTYpICsgc3VtKGVzdGltYXRlZF9nZW5lcmF0aW9uX2d3aF8yMDE2KSksCiAgICAgICAgICBlbmVyZ3kyMDE3ID0gMC41KiAoc3VtKGdlbmVyYXRpb25fZ3doXzIwMTcpICsgc3VtKGVzdGltYXRlZF9nZW5lcmF0aW9uX2d3aF8yMDE3KSksCiAgICAgICAgICApCgpwb3dlcnBsYW50c1VTQUZ1ZWxZZWFyREYgPSBhcy5kYXRhLmZyYW1lKHBvd2VycGxhbnRzVVNBRnVlbFllYXIpCnBvd2VycGxhbnRzVVNBRnVlbFllYXJMYWJlbGVkID0gcG93ZXJwbGFudHNVU0FGdWVsWWVhckRGWywtMV0Kcm93Lm5hbWVzKHBvd2VycGxhbnRzVVNBRnVlbFllYXJMYWJlbGVkKSA9IHBvd2VycGxhbnRzVVNBRnVlbFllYXJERlssMV0KdHJhbnNwb3NlUG93ZXJwbGFudHNVU0FGdWVsWWVhciA9IHRyYW5zcG9zZShwb3dlcnBsYW50c1VTQUZ1ZWxZZWFyTGFiZWxlZCkKY29sbmFtZXModHJhbnNwb3NlUG93ZXJwbGFudHNVU0FGdWVsWWVhcikgPSBwb3dlcnBsYW50c1VTQUZ1ZWxZZWFyREZbLDFdCnRyYW5zcG9zZVBvd2VycGxhbnRzVVNBRnVlbFllYXIkWWVhciA9IGMoMjAxMywyMDE0LDIwMTUsMjAxNiwyMDE3KQoKCnRvdGFsRW5lcmd5ID0gcG93ZXJwbGFudHNVU0FGdWVsWWVhciAlPiUgbXV0YXRlKHRvdGFsID0gZW5lcmd5MjAxMysgZW5lcmd5MjAxNCArZW5lcmd5MjAxNSArIGVuZXJneTIwMTYgKyBlbmVyZ3kyMDE3KQoKYGBgCgptYXAKYGBge3J9CnBvd2VydHlwZSA9ICJXaW5kIgpsZWFmbGV0KHBvd2VycGxhbnRzICU+JSBmaWx0ZXIocHJpbWFyeV9mdWVsID09IHBvd2VydHlwZSkpICU+JSBhZGRUaWxlcygpICU+JSBhZGRNYXJrZXJzKH5sb25naXR1ZGUsfmxhdGl0dWRlLHBvcHVwPSB+cHJpbWFyeV9mdWVsLGxhYmVsPSB+bmFtZSkKYGBgCgpUb3RhbCBlbmVyZ3kgYmFyIGNoYXJ0CmBgYHtyfQp0b3RhbEVuZXJneUNoYXJ0PWdncGxvdCh0b3RhbEVuZXJneSxhZXMoeD1yZW9yZGVyKHByaW1hcnlfZnVlbCx0b3RhbCkseT10b3RhbCxmaWxsPXByaW1hcnlfZnVlbCkpICsgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiKSArIGNvb3JkX2ZsaXAoKSArIHNjYWxlX3lfY29udGludW91cyh0cmFucz0gJ2xvZzEwJywgbGFiZWxzID0gdHJhbnNfZm9ybWF0KCdsb2cxMCcsbWF0aF9mb3JtYXQoMTBeLngpKSkgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZT05MCkpICsgeWxhYigiRW5lcmd5IEFjY3VtdWxhdGVkIE1XSCIpICsgeGxhYigiUHJpbWFyeSBGdWVsIikKdG90YWxFbmVyZ3lDaGFydApgYGAKCmVuZXJneSBwcm9kdWNlZApgYGB7cn0KCmRhdGFfbG9uZyA9IG1lbHQodHJhbnNwb3NlUG93ZXJwbGFudHNVU0FGdWVsWWVhciwgaWQ9IlllYXIiKQpjb2xuYW1lcyhkYXRhX2xvbmcpID0gYygiWWVhciIsInByaW1hcnlfZnVlbCIsImVuZXJneSIpCgpsaW5lcGxvdCA9IGdncGxvdChkYXRhX2xvbmcsIGFlcyh4PVllYXIseT1lbmVyZ3ksIGNvbG9yPSBwcmltYXJ5X2Z1ZWwpKSArIHlsYWIoIkVuZXJneSBQcm9kdWNlZCBNV0giKSArIHhsYWIoIlllYXIiKSArIGdlb21fbGluZSgpICsgc2NhbGVfeV9jb250aW51b3VzKHRyYW5zPSAnbG9nMTAnLCBsYWJlbHMgPSB0cmFuc19mb3JtYXQoJ2xvZzEwJyxtYXRoX2Zvcm1hdCgxMF4ueCkpKSArZ2d0aXRsZSgiRW5lcmd5IFByb2R1Y2VkIG92ZXIgdGhlIFllYXJzIHBlciBUeXBlIikKCmdncGxvdGx5KGxpbmVwbG90KQpgYGAKCm51bWJlciBvZiBwbGFudHMgYnkgdHlwZQpgYGB7cn0KbnVtYmVyT2ZQbGFudHMgPSBwb3dlcnBsYW50c1VTQUZ1ZWwgJT4lIHN1bW1hcml6ZShudW1iZXIgPSBuKCkpCmdncGxvdChudW1iZXJPZlBsYW50cyxhZXMoeD1yZW9yZGVyKHByaW1hcnlfZnVlbCxudW1iZXIpLCB5PW51bWJlcixmaWxsPXByaW1hcnlfZnVlbCkpICsgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiKSArIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlPTkwKSkgKyBjb29yZF9mbGlwKCkgKyBzY2FsZV95X2NvbnRpbnVvdXModHJhbnM9ICdsb2cxMCcsIGxhYmVscyA9IHRyYW5zX2Zvcm1hdCgnbG9nMTAnLG1hdGhfZm9ybWF0KDEwXi54KSkpICsgeGxhYigiUHJpbWFyeSBGdWVsIikgKyB5bGFiKCJOdW1iZXIgb2YgUGxhbnRzIikgK2dndGl0bGUoIk51bWJlciBvZiBQbGFudHMgcGVyIFR5cGUiKQpgYGAKCmBgYHtyfQoKYGBg